package com.atguigu.java;

import org.junit.Test;

import java.util.Date;

/**
 * @author : leimingchao
 * @Description:
 *
 *      JDK8之前日期和时间的API测试
 *
 * @date Date : 2021年06月19日 23:28
 */
public class DateTimeTest {

    /**
     * java.util.Date
     *       |------java.sql.Date
     *
     *  1.两个构造器的使用
     *        >构造器一：Date()创建一个对应当前时间的date对象
     *        >构造器二：创建指定毫秒数的date对象
     *  2.两个方法的使用
     *        >toString():显示当前的年、月、日、时、分、秒
     *        >getTime():获取当前Date对象对应的毫秒数。（时间戳）
     *
     *  3.java.sql.Date对应着数据库中的日期类型的变量
     *        >如何实例化
     *        >如何将java.util.Date对象转换为java.sql.Date对象
     */
    @Test
    public void test2() {
        //构造器一：Date()创建一个对应当前时间的date对象
        Date date = new Date();
        //Sun Jun 20 09:34:50 CST 2021
        System.out.println(date);
        //1624153068778
        System.out.println(date.getTime());
        //构造器二：创建指定毫秒数的date对象
        Date date2 = new Date(1624153068778L);
        System.out.println(date2);

        System.out.println("************************");
        //创建java.sql.Date对象
        java.sql.Date date3 = new java.sql.Date(234556678899L);
        //1977-06-08
        System.out.println(date3);
        //如何将java.util.Date对象转换为java.sql.Date对象
        //情况一：
        // Date date4 = new java.sql.Date(234567890956L);
        // java.sql.Date date5 = (java.sql.Date) date4;
        //情况二：
        Date date6 = new Date();
        System.out.println(date6);

        //报错,java.util.Date不能直接强转成java.sql.Date
        // java.sql.Date date7 = (java.sql.Date) date6;

        //Father father = new Father();
        //Man man = (Man) father
        //不能直接强转，否则会报错，因为子类有的属性不能通过父类的强转得到，
        //以前我们强转不报错，是因为，我们先Father father = new Man();  --> Man man = (Man) father;
        java.sql.Date date8 = new java.sql.Date(date6.getTime());
        System.out.println(date8);

    }

    /**
     * 1.System类中的currentTimeMillis():
     *
     */
    @Test
    public void test1() {
        //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
        //称为时间戳
        long time = System.currentTimeMillis();
        System.out.println(time);
    }
}
